{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "9ccd112d-415b-443b-868b-c9a3ef50d287",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "📅 正在处理 24-07 数据...\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "Promise { <pending> }"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "┌─────────┬──────┬─────────────┬─────────┐\n",
      "│ (index) │ 排名 │ 公司        │ 影响力  │\n",
      "├─────────┼──────┼─────────────┼─────────┤\n",
      "│ 0       │ 1    │ 'Huawei'    │ 9193.53 │\n",
      "│ 1       │ 2    │ 'Alibaba'   │ 2106.11 │\n",
      "│ 2       │ 3    │ 'Ant group' │ 1537.58 │\n",
      "│ 3       │ 4    │ 'Baidu'     │ 1317.53 │\n",
      "│ 4       │ 5    │ 'DaoCloud'  │ 1184.6  │\n",
      "│ 5       │ 6    │ 'Others'    │ 1047.88 │\n",
      "│ 6       │ 7    │ 'ByteDance' │ 703.74  │\n",
      "│ 7       │ 8    │ 'Tencent'   │ 533.19  │\n",
      "│ 8       │ 9    │ 'ESPRESSIF' │ 531.99  │\n",
      "│ 9       │ 10   │ 'Fit2Cloud' │ 515.32  │\n",
      "│ 10      │ 11   │ 'PingCAP'   │ 419.05  │\n",
      "│ 11      │ 12   │ 'openKylin' │ 346.19  │\n",
      "│ 12      │ 13   │ 'Zilliz'    │ 317.98  │\n",
      "│ 13      │ 14   │ 'StarRocks' │ 259.9   │\n",
      "│ 14      │ 15   │ 'Deepin'    │ 198.58  │\n",
      "└─────────┴──────┴─────────────┴─────────┘\n",
      "📅 正在处理 24-08 数据...\n",
      "┌─────────┬──────┬─────────────┬─────────┐\n",
      "│ (index) │ 排名 │ 公司        │ 影响力  │\n",
      "├─────────┼──────┼─────────────┼─────────┤\n",
      "│ 0       │ 1    │ 'Huawei'    │ 9859.37 │\n",
      "│ 1       │ 2    │ 'Alibaba'   │ 2073.85 │\n",
      "│ 2       │ 3    │ 'Ant group' │ 1524.67 │\n",
      "│ 3       │ 4    │ 'Baidu'     │ 1273.56 │\n",
      "│ 4       │ 5    │ 'Others'    │ 1001.44 │\n",
      "│ 5       │ 6    │ 'DaoCloud'  │ 985.61  │\n",
      "│ 6       │ 7    │ 'ByteDance' │ 720.7   │\n",
      "│ 7       │ 8    │ 'ESPRESSIF' │ 534.53  │\n",
      "│ 8       │ 9    │ 'Tencent'   │ 518.77  │\n",
      "│ 9       │ 10   │ 'Fit2Cloud' │ 516.48  │\n",
      "│ 10      │ 11   │ 'PingCAP'   │ 414.12  │\n",
      "│ 11      │ 12   │ 'openKylin' │ 347.92  │\n",
      "│ 12      │ 13   │ 'Zilliz'    │ 312.24  │\n",
      "│ 13      │ 14   │ 'StarRocks' │ 253.29  │\n",
      "│ 14      │ 15   │ 'Deepin'    │ 188.01  │\n",
      "└─────────┴──────┴─────────────┴─────────┘\n",
      "📅 正在处理 24-09 数据...\n",
      "┌─────────┬──────┬─────────────┬──────────┐\n",
      "│ (index) │ 排名 │ 公司        │ 影响力   │\n",
      "├─────────┼──────┼─────────────┼──────────┤\n",
      "│ 0       │ 1    │ 'Huawei'    │ 10261.09 │\n",
      "│ 1       │ 2    │ 'Alibaba'   │ 2068.23  │\n",
      "│ 2       │ 3    │ 'Ant group' │ 1492.77  │\n",
      "│ 3       │ 4    │ 'Baidu'     │ 1189.56  │\n",
      "│ 4       │ 5    │ 'Others'    │ 923.52   │\n",
      "│ 5       │ 6    │ 'DaoCloud'  │ 778.02   │\n",
      "│ 6       │ 7    │ 'ByteDance' │ 709.5    │\n",
      "│ 7       │ 8    │ 'ESPRESSIF' │ 534.85   │\n",
      "│ 8       │ 9    │ 'Tencent'   │ 520.59   │\n",
      "│ 9       │ 10   │ 'Fit2Cloud' │ 500.8    │\n",
      "│ 10      │ 11   │ 'PingCAP'   │ 413.26   │\n",
      "│ 11      │ 12   │ 'Zilliz'    │ 316.84   │\n",
      "│ 12      │ 13   │ 'openKylin' │ 284.32   │\n",
      "│ 13      │ 14   │ 'StarRocks' │ 241      │\n",
      "│ 14      │ 15   │ 'Deepin'    │ 186.54   │\n",
      "└─────────┴──────┴─────────────┴──────────┘\n",
      "📅 正在处理 24-10 数据...\n",
      "┌─────────┬──────┬─────────────┬──────────┐\n",
      "│ (index) │ 排名 │ 公司        │ 影响力   │\n",
      "├─────────┼──────┼─────────────┼──────────┤\n",
      "│ 0       │ 1    │ 'Huawei'    │ 10226.89 │\n",
      "│ 1       │ 2    │ 'Alibaba'   │ 1950.97  │\n",
      "│ 2       │ 3    │ 'Ant group' │ 1403.85  │\n",
      "│ 3       │ 4    │ 'Baidu'     │ 1157.8   │\n",
      "│ 4       │ 5    │ 'Others'    │ 897.57   │\n",
      "│ 5       │ 6    │ 'ByteDance' │ 687.94   │\n",
      "│ 6       │ 7    │ 'DaoCloud'  │ 609.39   │\n",
      "│ 7       │ 8    │ 'ESPRESSIF' │ 526.58   │\n",
      "│ 8       │ 9    │ 'Fit2Cloud' │ 508.15   │\n",
      "│ 9       │ 10   │ 'Tencent'   │ 476.4    │\n",
      "│ 10      │ 11   │ 'PingCAP'   │ 409.59   │\n",
      "│ 11      │ 12   │ 'Zilliz'    │ 294.35   │\n",
      "│ 12      │ 13   │ 'openKylin' │ 284.56   │\n",
      "│ 13      │ 14   │ 'StarRocks' │ 238.85   │\n",
      "│ 14      │ 15   │ 'Deepin'    │ 171.55   │\n",
      "└─────────┴──────┴─────────────┴──────────┘\n",
      "📅 正在处理 24-11 数据...\n",
      "┌─────────┬──────┬─────────────┬──────────┐\n",
      "│ (index) │ 排名 │ 公司        │ 影响力   │\n",
      "├─────────┼──────┼─────────────┼──────────┤\n",
      "│ 0       │ 1    │ 'Huawei'    │ 10640.25 │\n",
      "│ 1       │ 2    │ 'Alibaba'   │ 1955.21  │\n",
      "│ 2       │ 3    │ 'Ant group' │ 1405.72  │\n",
      "│ 3       │ 4    │ 'Baidu'     │ 1209.85  │\n",
      "│ 4       │ 5    │ 'Others'    │ 916.3    │\n",
      "│ 5       │ 6    │ 'ByteDance' │ 675.68   │\n",
      "│ 6       │ 7    │ 'DaoCloud'  │ 560.23   │\n",
      "│ 7       │ 8    │ 'ESPRESSIF' │ 518.23   │\n",
      "│ 8       │ 9    │ 'Fit2Cloud' │ 480.43   │\n",
      "│ 9       │ 10   │ 'Tencent'   │ 478.21   │\n",
      "│ 10      │ 11   │ 'PingCAP'   │ 437.72   │\n",
      "│ 11      │ 12   │ 'openKylin' │ 304.5    │\n",
      "│ 12      │ 13   │ 'Zilliz'    │ 293.7    │\n",
      "│ 13      │ 14   │ 'StarRocks' │ 222.02   │\n",
      "│ 14      │ 15   │ 'Deepin'    │ 172.78   │\n",
      "└─────────┴──────┴─────────────┴──────────┘\n",
      "📅 正在处理 24-12 数据...\n",
      "┌─────────┬──────┬─────────────┬──────────┐\n",
      "│ (index) │ 排名 │ 公司        │ 影响力   │\n",
      "├─────────┼──────┼─────────────┼──────────┤\n",
      "│ 0       │ 1    │ 'Huawei'    │ 10858.29 │\n",
      "│ 1       │ 2    │ 'Alibaba'   │ 1965.74  │\n",
      "│ 2       │ 3    │ 'Ant group' │ 1413.19  │\n",
      "│ 3       │ 4    │ 'Baidu'     │ 1202.74  │\n",
      "│ 4       │ 5    │ 'Others'    │ 907.97   │\n",
      "│ 5       │ 6    │ 'ByteDance' │ 684.71   │\n",
      "│ 6       │ 7    │ 'Tencent'   │ 532.91   │\n",
      "│ 7       │ 8    │ 'DaoCloud'  │ 514      │\n",
      "│ 8       │ 9    │ 'ESPRESSIF' │ 506.16   │\n",
      "│ 9       │ 10   │ 'Fit2Cloud' │ 474.01   │\n",
      "│ 10      │ 11   │ 'PingCAP'   │ 438.04   │\n",
      "│ 11      │ 12   │ 'Zilliz'    │ 300.34   │\n",
      "│ 12      │ 13   │ 'openKylin' │ 263.63   │\n",
      "│ 13      │ 14   │ 'StarRocks' │ 226.41   │\n",
      "│ 14      │ 15   │ 'Deepin'    │ 171.16   │\n",
      "└─────────┴──────┴─────────────┴──────────┘\n",
      "📅 正在处理 25-01 数据...\n",
      "┌─────────┬──────┬─────────────┬──────────┐\n",
      "│ (index) │ 排名 │ 公司        │ 影响力   │\n",
      "├─────────┼──────┼─────────────┼──────────┤\n",
      "│ 0       │ 1    │ 'Huawei'    │ 10416.91 │\n",
      "│ 1       │ 2    │ 'Alibaba'   │ 1822.95  │\n",
      "│ 2       │ 3    │ 'Ant group' │ 1329.97  │\n",
      "│ 3       │ 4    │ 'Baidu'     │ 1119.37  │\n",
      "│ 4       │ 5    │ 'Others'    │ 760.95   │\n",
      "│ 5       │ 6    │ 'ByteDance' │ 684.21   │\n",
      "│ 6       │ 7    │ 'ESPRESSIF' │ 529.56   │\n",
      "│ 7       │ 8    │ 'Tencent'   │ 476.51   │\n",
      "│ 8       │ 9    │ 'DaoCloud'  │ 424.47   │\n",
      "│ 9       │ 10   │ 'PingCAP'   │ 423.89   │\n",
      "│ 10      │ 11   │ 'Fit2Cloud' │ 419.89   │\n",
      "│ 11      │ 12   │ 'Zilliz'    │ 294.02   │\n",
      "│ 12      │ 13   │ 'StarRocks' │ 215.46   │\n",
      "│ 13      │ 14   │ 'openKylin' │ 204.37   │\n",
      "│ 14      │ 15   │ 'Deepin'    │ 162.04   │\n",
      "└─────────┴──────┴─────────────┴──────────┘\n",
      "📅 正在处理 25-02 数据...\n",
      "┌─────────┬──────┬─────────────┬──────────┐\n",
      "│ (index) │ 排名 │ 公司        │ 影响力   │\n",
      "├─────────┼──────┼─────────────┼──────────┤\n",
      "│ 0       │ 1    │ 'Huawei'    │ 10380.43 │\n",
      "│ 1       │ 2    │ 'Alibaba'   │ 1814.8   │\n",
      "│ 2       │ 3    │ 'Ant group' │ 1275.55  │\n",
      "│ 3       │ 4    │ 'Baidu'     │ 1058.98  │\n",
      "│ 4       │ 5    │ 'ByteDance' │ 746.93   │\n",
      "│ 5       │ 6    │ 'Others'    │ 703.21   │\n",
      "│ 6       │ 7    │ 'ESPRESSIF' │ 523.31   │\n",
      "│ 7       │ 8    │ 'Tencent'   │ 442.67   │\n",
      "│ 8       │ 9    │ 'PingCAP'   │ 414.41   │\n",
      "│ 9       │ 10   │ 'Fit2Cloud' │ 409.04   │\n",
      "│ 10      │ 11   │ 'DaoCloud'  │ 401.38   │\n",
      "│ 11      │ 12   │ 'Zilliz'    │ 308.28   │\n",
      "│ 12      │ 13   │ 'LobeHub'   │ 229.7    │\n",
      "│ 13      │ 14   │ 'openKylin' │ 221.68   │\n",
      "│ 14      │ 15   │ 'StarRocks' │ 211.56   │\n",
      "└─────────┴──────┴─────────────┴──────────┘\n",
      "📅 正在处理 25-03 数据...\n",
      "┌─────────┬──────┬─────────────┬──────────┐\n",
      "│ (index) │ 排名 │ 公司        │ 影响力   │\n",
      "├─────────┼──────┼─────────────┼──────────┤\n",
      "│ 0       │ 1    │ 'Huawei'    │ 10163.56 │\n",
      "│ 1       │ 2    │ 'Alibaba'   │ 1945.96  │\n",
      "│ 2       │ 3    │ 'Ant group' │ 1243.09  │\n",
      "│ 3       │ 4    │ 'Baidu'     │ 1068.12  │\n",
      "│ 4       │ 5    │ 'ByteDance' │ 868.78   │\n",
      "│ 5       │ 6    │ 'Others'    │ 687.33   │\n",
      "│ 6       │ 7    │ 'ESPRESSIF' │ 536.94   │\n",
      "│ 7       │ 8    │ 'Tencent'   │ 461.23   │\n",
      "│ 8       │ 9    │ 'PingCAP'   │ 397.82   │\n",
      "│ 9       │ 10   │ 'Fit2Cloud' │ 391.69   │\n",
      "│ 10      │ 11   │ 'DaoCloud'  │ 319.7    │\n",
      "│ 11      │ 12   │ 'Zilliz'    │ 307.57   │\n",
      "│ 12      │ 13   │ 'openKylin' │ 230.01   │\n",
      "│ 13      │ 14   │ 'StarRocks' │ 227.43   │\n",
      "│ 14      │ 15   │ 'LobeHub'   │ 208.84   │\n",
      "└─────────┴──────┴─────────────┴──────────┘\n",
      "📅 正在处理 25-04 数据...\n",
      "┌─────────┬──────┬─────────────┬──────────┐\n",
      "│ (index) │ 排名 │ 公司        │ 影响力   │\n",
      "├─────────┼──────┼─────────────┼──────────┤\n",
      "│ 0       │ 1    │ 'Huawei'    │ 10201.58 │\n",
      "│ 1       │ 2    │ 'Alibaba'   │ 1942.13  │\n",
      "│ 2       │ 3    │ 'Ant group' │ 1314.23  │\n",
      "│ 3       │ 4    │ 'Baidu'     │ 1044.34  │\n",
      "│ 4       │ 5    │ 'ByteDance' │ 987.11   │\n",
      "│ 5       │ 6    │ 'Others'    │ 661.23   │\n",
      "│ 6       │ 7    │ 'ESPRESSIF' │ 531.56   │\n",
      "│ 7       │ 8    │ 'Tencent'   │ 467.21   │\n",
      "│ 8       │ 9    │ 'PingCAP'   │ 412.05   │\n",
      "│ 9       │ 10   │ 'Fit2Cloud' │ 383.25   │\n",
      "│ 10      │ 11   │ 'Zilliz'    │ 308      │\n",
      "│ 11      │ 12   │ 'DaoCloud'  │ 255.84   │\n",
      "│ 12      │ 13   │ 'openKylin' │ 225.81   │\n",
      "│ 13      │ 14   │ 'StarRocks' │ 223.7    │\n",
      "│ 14      │ 15   │ 'LobeHub'   │ 185.99   │\n",
      "└─────────┴──────┴─────────────┴──────────┘\n",
      "📅 正在处理 25-05 数据...\n",
      "┌─────────┬──────┬─────────────┬─────────┐\n",
      "│ (index) │ 排名 │ 公司        │ 影响力  │\n",
      "├─────────┼──────┼─────────────┼─────────┤\n",
      "│ 0       │ 1    │ 'Huawei'    │ 9858.84 │\n",
      "│ 1       │ 2    │ 'Alibaba'   │ 1928.77 │\n",
      "│ 2       │ 3    │ 'Ant group' │ 1166.08 │\n",
      "│ 3       │ 4    │ 'ByteDance' │ 1061.45 │\n",
      "│ 4       │ 5    │ 'Baidu'     │ 992.88  │\n",
      "│ 5       │ 6    │ 'Others'    │ 654.27  │\n",
      "│ 6       │ 7    │ 'ESPRESSIF' │ 501.31  │\n",
      "│ 7       │ 8    │ 'Tencent'   │ 420.61  │\n",
      "│ 8       │ 9    │ 'PingCAP'   │ 403.48  │\n",
      "│ 9       │ 10   │ 'Fit2Cloud' │ 368.64  │\n",
      "│ 10      │ 11   │ 'Zilliz'    │ 296.96  │\n",
      "│ 11      │ 12   │ 'StarRocks' │ 226     │\n",
      "│ 12      │ 13   │ 'DaoCloud'  │ 203.11  │\n",
      "│ 13      │ 14   │ 'openKylin' │ 195.73  │\n",
      "│ 14      │ 15   │ 'LobeHub'   │ 162.32  │\n",
      "└─────────┴──────┴─────────────┴─────────┘\n",
      "📅 正在处理 25-06 数据...\n",
      "┌─────────┬──────┬─────────────┬──────────┐\n",
      "│ (index) │ 排名 │ 公司        │ 影响力   │\n",
      "├─────────┼──────┼─────────────┼──────────┤\n",
      "│ 0       │ 1    │ 'Huawei'    │ 10039.18 │\n",
      "│ 1       │ 2    │ 'Alibaba'   │ 1828.14  │\n",
      "│ 2       │ 3    │ 'Ant group' │ 1044.32  │\n",
      "│ 3       │ 4    │ 'ByteDance' │ 970.34   │\n",
      "│ 4       │ 5    │ 'Baidu'     │ 932.27   │\n",
      "│ 5       │ 6    │ 'Others'    │ 558.65   │\n",
      "│ 6       │ 7    │ 'ESPRESSIF' │ 448.01   │\n",
      "│ 7       │ 8    │ 'Tencent'   │ 384.98   │\n",
      "│ 8       │ 9    │ 'PingCAP'   │ 384.7    │\n",
      "│ 9       │ 10   │ 'Fit2Cloud' │ 356.35   │\n",
      "│ 10      │ 11   │ 'Zilliz'    │ 281.13   │\n",
      "│ 11      │ 12   │ 'openKylin' │ 222.73   │\n",
      "│ 12      │ 13   │ 'StarRocks' │ 202.13   │\n",
      "│ 13      │ 14   │ 'DaoCloud'  │ 171.9    │\n",
      "│ 14      │ 15   │ 'Deepin'    │ 127.72   │\n",
      "└─────────┴──────┴─────────────┴──────────┘\n",
      "✅ 数据已成功保存到 中国企业月度排名数据_20247_20256.csv\n"
     ]
    }
   ],
   "source": [
    "var openDigger = require('../src/open_digger');\n",
    "const fs = require('fs');\n",
    "\n",
    "// 时间范围：2024年7月至2025年6月\n",
    "const startYear = 2024;\n",
    "const startMonth = 7;\n",
    "const endYear = 2025;\n",
    "const endMonth = 6;\n",
    "\n",
    "// 生成月份标签数组（严格格式：\"24-07\"，仅包含年份后两位和月份，无日期）\n",
    "const months = [];\n",
    "for (let year = startYear; year <= endYear; year++) {\n",
    "    const start = (year === startYear) ? startMonth : 1;\n",
    "    const end = (year === endYear) ? endMonth : 12;\n",
    "    for (let month = start; month <= end; month++) {\n",
    "        // 提取年份后两位（如2024 -> 24）\n",
    "        const yearStr = year.toString().slice(-2);\n",
    "        // 月份补零（如7 -> 07）\n",
    "        const monthStr = month.toString().padStart(2, '0');\n",
    "        // 组合成\"24-07\"格式\n",
    "        months.push(`${yearStr}-${monthStr}`);\n",
    "    }\n",
    "}\n",
    "\n",
    "// 获取平台数据和WHERE条件\n",
    "var chineseLabel = openDigger.label.getPlatformData([':regions/CN']);\n",
    "var chineseWhereClause = chineseLabel.map(p => \n",
    "    `((repo_id IN (${p.repos.map(r => r.id).join(',')}) AND platform='${p.name}') OR \n",
    "    (org_id IN (${p.orgs.map(o => o.id).join(',')}) AND platform='${p.name}'))`\n",
    ").join(' OR ');\n",
    "\n",
    "var limit = 15; // 每月返回前15名公司\n",
    "\n",
    "async function saveMonthlyRankToCSV() {\n",
    "    const companyData = {};\n",
    "    const allCompanies = new Set();\n",
    "\n",
    "    // 循环处理每个月\n",
    "    for (let year = startYear; year <= endYear; year++) {\n",
    "        const start = (year === startYear) ? startMonth : 1;\n",
    "        const end = (year === endYear) ? endMonth : 12;\n",
    "        \n",
    "        for (let month = start; month <= end; month++) {\n",
    "            // 生成当前月份标签（\"24-07\"格式）\n",
    "            const yearStr = year.toString().slice(-2);\n",
    "            const monthStr = month.toString().padStart(2, '0');\n",
    "            const dateStr = `${yearStr}-${monthStr}`;\n",
    "            \n",
    "            console.log(`📅 正在处理 ${dateStr} 数据...`);\n",
    "\n",
    "            // 查询当月数据\n",
    "            let data = await openDigger.index.openrank.getRepoOpenrank({\n",
    "                whereClause: chineseWhereClause,\n",
    "                startYear: year,\n",
    "                startMonth: month,\n",
    "                endYear: year,\n",
    "                endMonth: month,\n",
    "                groupBy: 'Company',\n",
    "                groupTimeRange: 'month',\n",
    "                order: 'DESC',\n",
    "                limit: limit\n",
    "            });\n",
    "\n",
    "            // 输出表格到控制台\n",
    "            console.table(data.map((d, i) => ({\n",
    "                '排名': i + 1,\n",
    "                '公司': d.name,\n",
    "                '影响力': d.openrank[0]\n",
    "            })));\n",
    "\n",
    "            // 保存当月排名\n",
    "            data.forEach((d, index) => {\n",
    "                const rank = index + 1;\n",
    "                allCompanies.add(d.name);\n",
    "                if (!companyData[d.name]) {\n",
    "                    companyData[d.name] = {};\n",
    "                }\n",
    "                companyData[d.name][dateStr] = rank;\n",
    "            });\n",
    "        }\n",
    "    }\n",
    "\n",
    "    // 准备CSV内容，表头为\"公司名称\" + \"24-07\"格式的月份\n",
    "    let csvContent = ['公司名称', ...months].join(',') + '\\n';\n",
    "\n",
    "    // 添加各公司数据\n",
    "    allCompanies.forEach(company => {\n",
    "        const row = [company];\n",
    "        months.forEach(month => {\n",
    "            row.push(companyData[company][month] || '');\n",
    "        });\n",
    "        csvContent += row.join(',') + '\\n';\n",
    "    });\n",
    "\n",
    "    // 保存为CSV文件\n",
    "    const fileName = `中国企业月度排名数据_${startYear}${startMonth}_${endYear}${endMonth}.csv`;\n",
    "    fs.writeFileSync(fileName, csvContent, 'utf8');\n",
    "    console.log(`✅ 数据已成功保存到 ${fileName}`);\n",
    "}\n",
    "\n",
    "// 执行函数\n",
    "saveMonthlyRankToCSV().catch(err => {\n",
    "    console.error('❌ 处理过程中发生错误:', err);\n",
    "});\n",
    "    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "866e287c-0219-413a-bbdd-445c7b2df7bb",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "JavaScript (Node.js)",
   "language": "javascript",
   "name": "javascript"
  },
  "language_info": {
   "file_extension": ".js",
   "mimetype": "application/javascript",
   "name": "javascript",
   "version": "20.18.1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
